home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / calendei / start2.frm < prev   
Text File  |  1995-05-07  |  9KB  |  279 lines

  1. VERSION 2.00
  2. Begin Form Form1 
  3.    BackColor       =   &H00C0C0C0&
  4.    BorderStyle     =   1  'Fixed Single
  5.    Caption         =   "Calendar Form"
  6.    ClientHeight    =   3000
  7.    ClientLeft      =   435
  8.    ClientTop       =   2145
  9.    ClientWidth     =   5190
  10.    ControlBox      =   0   'False
  11.    Height          =   3405
  12.    Left            =   375
  13.    LinkTopic       =   "Form1"
  14.    MaxButton       =   0   'False
  15.    MinButton       =   0   'False
  16.    ScaleHeight     =   3000
  17.    ScaleWidth      =   5190
  18.    Top             =   1800
  19.    Width           =   5310
  20.    Begin CommandButton Command1 
  21.       Caption         =   "Draw New Date"
  22.       Height          =   315
  23.       Left            =   3540
  24.       TabIndex        =   5
  25.       Top             =   540
  26.       Width           =   1515
  27.    End
  28.    Begin CommandButton HelpButton 
  29.       Caption         =   "&Help"
  30.       Height          =   375
  31.       Left            =   3840
  32.       TabIndex        =   2
  33.       Top             =   2490
  34.       Width           =   915
  35.    End
  36.    Begin CommandButton CancelButton 
  37.       Cancel          =   -1  'True
  38.       Caption         =   "&Cancel"
  39.       Height          =   375
  40.       Left            =   3840
  41.       TabIndex        =   4
  42.       Top             =   1680
  43.       Width           =   915
  44.    End
  45.    Begin CommandButton OkButton 
  46.       Caption         =   "&OK"
  47.       Default         =   -1  'True
  48.       Height          =   375
  49.       Left            =   3840
  50.       TabIndex        =   3
  51.       Top             =   1080
  52.       Width           =   915
  53.    End
  54.    Begin TextBox CheckDate 
  55.       Height          =   315
  56.       Left            =   3540
  57.       MaxLength       =   10
  58.       TabIndex        =   1
  59.       Text            =   "12/30/90"
  60.       Top             =   120
  61.       Width           =   1275
  62.    End
  63.    Begin PictureBox P 
  64.       AutoRedraw      =   -1  'True
  65.       BackColor       =   &H0080FFFF&
  66.       FillStyle       =   0  'Solid
  67.       FontBold        =   -1  'True
  68.       FontItalic      =   0   'False
  69.       FontName        =   "Arial"
  70.       FontSize        =   8.25
  71.       FontStrikethru  =   0   'False
  72.       FontUnderline   =   0   'False
  73.       Height          =   2750
  74.       Left            =   180
  75.       ScaleHeight     =   7.913
  76.       ScaleMode       =   0  'User
  77.       ScaleWidth      =   8.339
  78.       TabIndex        =   0
  79.       Top             =   120
  80.       Width           =   3300
  81.    End
  82. End
  83. 'Copyright ⌐ by David F Eisenberg, 1994.
  84. 'This code is freeware.
  85. 'You are granted unlimited rights to modify or distribute this code for use in your compiled projects.
  86. 'You may NOT distribute this source code without this disclaimer.
  87. 'No warantees are stated or implied.
  88.  
  89. Option Explicit
  90.  
  91.     Dim DayName(7) As String 'stores names of days
  92.     Dim cRow As Integer 'Current Row
  93.     Dim cCol As Integer 'Current Column
  94.     Dim RowData(8, 7) As Double 'Saves Dates for each position if there is a date there.
  95.     Dim TDate As Double 'Saves date selected.
  96.  
  97. 'Notes: The size of the picture box is critical. You may need to adjust the sizes if the
  98.     'marked dates do not display correctly. Change in increments of 1 twip until all spaces display correctly.
  99.     'The picture box as included should display corectly
  100.  
  101. 'Changes you MUST make:
  102.     '1. Verify the date entered in the box and include a change event to triger a new calendar draw
  103.     '2. Create routines for the buttons
  104.  
  105. 'Recomended changes:
  106.     '1. Add a spin button on the text box. You should verify the current date and reflect the changes
  107.         'in the calendar display by clearing the old marked box and going to the next or previous.
  108.         '(I did not include this because you may not have a spin control)
  109.     '2. Remove the Draw New Date button and replace its function. You may wish to respond
  110.         'to keypress commands or the above spin button.
  111.  
  112. Sub CancelButton_Click ()
  113.     'put your cancel routine here
  114.     End
  115. End Sub
  116.  
  117. Sub Command1_Click ()
  118.     DrawCal 'Draws the Calendar
  119. End Sub
  120.  
  121. Sub DrawCal ()
  122.     'Draws the calendar
  123.     Dim it As Integer 'Counter
  124.     Dim iCol As Integer 'column counter for fill
  125.     Dim iRow As Integer ' "
  126.     Dim cDate As Double 'Date to mark
  127.     Erase RowData 'initialize the date data
  128.     P.Cls 'Clear the picture box
  129.     P.DrawWidth = 1
  130.     'The next lines scale the picture box so that the boxes can be accounted for
  131.     P.ScaleWidth = 7.02
  132.     P.ScaleHeight = 8.03
  133.     'Draw the lines
  134.     P.Line (0, 0)-(7, 1.3), &HFFFF00, BF
  135.     For it = 3 To 8
  136.         P.Line (0, it)-(7, it)
  137.     Next it
  138.     For it = 1 To 6
  139.         P.Line (it, 1.4)-(it, 8)
  140.     Next it
  141.         P.Line (0, 0)-(0, 8.03)
  142.         P.Line (7, 0)-(7, 8.03)
  143.     P.Line (0, 1.4)-(7, 1.4)
  144.     P.Line (0, 0)-(7, 0)
  145.     P.DrawWidth = 2
  146.     P.Line (0, 1.3)-(7, 1.3)
  147.     P.Line (0, 2)-(7, 2)
  148.     
  149.     P.FontBold = True
  150.     P.CurrentY = 1.4
  151.     P.FontName = "Arial"
  152.     P.FontSize = 8.25
  153.     For it = 1 To 7
  154.         PrintPlace (it - .5), DayName(it)
  155.     Next it
  156.     'Draw the arrows
  157.     P.FontBold = True
  158.     P.FontSize = 16.5
  159.     P.CurrentY = .1
  160.     P.FontName = "WingDings"
  161.     PrintPlace .5, "τ"
  162.     PrintPlace 6.5, "Φ"
  163.     P.FontName = "Arial"
  164.     TDate = DateValue(CheckDate.Text)
  165.     PrintPlace 3.5, Format$(TDate, "mmmm yyyy")
  166.     cDate = DateValue(Format$(TDate, "mmmm/1/yyyy")) 'Find 1st day of the month
  167.     iCol = Val(Format$(cDate, "w")) 'Find starting column
  168.     iRow = 3
  169.     P.CurrentY = 2#
  170.     P.FontSize = 14
  171.     Do 'Fill the calendar
  172.         PrintPlace iCol - .5, Format$(cDate, "d")
  173.         RowData(iRow, iCol) = cDate
  174.         If cDate = TDate Then
  175.             cRow = iRow
  176.             cCol = iCol
  177.         End If
  178.         iCol = iCol + 1
  179.         If iCol > 7 Then
  180.             iCol = 1
  181.             iRow = iRow + 1
  182.             P.CurrentY = P.CurrentY + 1
  183.         End If
  184.         cDate = cDate + 1
  185.     Loop Until Day(cDate) = 1 'Check if into the next month and stop
  186.     MarkPlace 'mark the test date in the box
  187.  
  188. End Sub
  189.  
  190. Sub Form_Load ()
  191.     'initialize daynames for calendar
  192.     DayName(1) = "Sun"
  193.     DayName(2) = "Mon"
  194.     DayName(3) = "Tue"
  195.     DayName(4) = "Wed"
  196.     DayName(5) = "Thu"
  197.     DayName(6) = "Fri"
  198.     DayName(7) = "Sat"
  199.     CheckDate.Text = Format$(Now, "m/d/yyyy")
  200.     DrawCal
  201. End Sub
  202.  
  203. Sub HelpButton_Click ()
  204.     'call your help routine here
  205. End Sub
  206.  
  207. Sub MarkPlace ()
  208.     P.DrawMode = 7 'XOR
  209.         P.Line (cCol - .93, cRow - .9)-(cCol - .04, cRow - .04), QBColor(14), BF
  210.     P.DrawMode = 13
  211. End Sub
  212.  
  213. Sub OkButton_Click ()
  214.     'put your save routines here
  215.     End
  216. End Sub
  217.  
  218. Sub P_MouseDown (button As Integer, Shift As Integer, x As Single, y As Single)
  219.     'The scale properties of the form are set to show x and y as calendar positions.
  220.     Dim r As Integer 'row
  221.     Dim c As Integer 'column
  222.     Dim m As Integer 'month
  223.     Dim yr As Integer 'year
  224.     Dim dy As Integer 'day
  225.     If y <= 1.3 Then
  226.         If x < 1 Then 'check to see if on one of the arrows
  227.             m = Month(TDate)
  228.             yr = Year(TDate)
  229.             dy = Day(TDate)
  230.             m = m - 1
  231.             If m = 0 Then
  232.                 m = 12
  233.                 yr = yr - 1
  234.             End If
  235.             TDate = DateSerial(yr, m, dy)
  236.             Do Until Day(TDate) = dy
  237.                 dy = dy - 1
  238.                 TDate = DateSerial(yr, m, dy)
  239.             Loop
  240.             CheckDate.Text = Format$(TDate, "m/d/yyyy")
  241.             DrawCal
  242.         ElseIf x > 6 Then
  243.             m = Month(TDate)
  244.             yr = Year(TDate)
  245.             dy = Day(TDate)
  246.             m = m + 1
  247.             If m > 12 Then
  248.                 m = 1
  249.                 yr = yr + 1
  250.             End If
  251.             TDate = DateSerial(yr, m, dy)
  252.             Do Until Day(TDate) = dy
  253.                 dy = dy - 1
  254.                 TDate = DateSerial(yr, m, dy)
  255.             Loop
  256.             CheckDate.Text = Format$(TDate, "m/d/yyyy")
  257.             DrawCal
  258.         End If
  259.         Exit Sub
  260.     End If
  261.     r = Int(y) + 1
  262.     c = Int(x) + 1
  263.     If RowData(r, c) Then
  264.         MarkPlace 'remove previous mark
  265.         cRow